//封装axios的获取
// 封装了 baseUrl 根路径  网址
// 封装了 获取数据的过期时间
// 封装了 请求拦截和响应拦截
// 封装了 数据获取到之前的旋转小图标
// 数据如果没有获取到的报错信息
// 引入Vue
import Vue from "vue";
// 引入store
import store from "@/store";
// 引入全局Message
import { Message ,Loading} from "element-ui";
//引入axios
import axios from "axios";
const service = axios.create({
    baseURL: process.env.VUE_APP_API_URL,//"http://localhost:3007",
    timeout: 10000
});

var loadObj = null;

//请求拦截
service.interceptors.request.use(
    (config) => {
        if(!loadObj){
            loadObj = Loading.service({
                lock:true,
                target:"#loading",
                text:"加载中...",
                spinner:"el-icon-loading",
                background:"rgba(0,0,0,0.5)"
            })
        }
        //假设没有token，需要设置 token 令牌
        config.headers['user-token'] = store.getters.token;
        return config;
    },
    (error) => {
        Vue.nextTick(()=>{//以服务的方式调用loading需要用异步的方式关闭
            loadObj.close()
        });
        //错误返回
        return Promise.reject(error);
    }
);

//响应拦截
service.interceptors.response.use(
    (response) => {
        //对响应数据做点什么
        console.log(response);

        Vue.nextTick(()=>{//以服务的方式调用loading需要用异步的方式关闭
            loadObj.close()
        })
        if(response.data.code === 666){
            return response;
        }else{
            Message({
                message:response.data.msg,
                type:"error"
            })
            return Promise.reject(response.data.msg);
        }
    }, (error) => {
        Vue.nextTick(()=>{//以服务的方式调用loading需要用异步的方式关闭
            loadObj.close()
        }),
        Message({
            message:error,
            type:"error"
        });
        return Promise.reject(error);
});

//输出
export default service;